﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using QuanLyKho.DataAccess;
using QuanLyKho.Common;
using QuanLyKho.GUI.Library;
using System.Threading;
namespace QuanLyKho.GUI
{
    public partial class frmMaterial : Form
    {
        private static long ID;
        public frmMaterial()
        {
            InitializeComponent();
        }
        private void frmMaterial_Load(object sender, EventArgs e)
        {
            FillDatacombo();
        }
        public frmMaterial(long _ID)
        {
            InitializeComponent();
            txtCode.Focus();
            ID = _ID;

            binDataOneMaterial(ID);
        }

        private void binDataOneMaterial(long _ID)
        {
            List<clsListMaterial> lisMaterial = new clsDataAccessListMaterial().SelectOneWithId(_ID);
            if (lisMaterial.Count > 0)
            {
                txtCode.Text = lisMaterial[0].Code;
                txtName.Text = lisMaterial[0].Name;
                txtDes.Text = lisMaterial[0].Des;
                txtUnit.Text = lisMaterial[0].Unit;
                txtSpecification.Text = lisMaterial[0].Specification;
                txtCatagory.Text = lisMaterial[0].Category;
                cboSupplier.SelectedValue = lisMaterial[0].IDSupplier;

            }
        }
        //loadcombo
        public void FillDatacombo()
        {
            try
            {
                List<clsListSupplier> list = new clsDataAccessListSupplier().ListSupplierSelectAll();
                DataTable dt = new DataTable("Supplier");
                dt.Columns.Add("ID", typeof(long));
                dt.Columns.Add("Name", typeof(string));
                DataRow dr;
                foreach (clsListSupplier obj in list)
                {
                    dr = dt.NewRow();
                    dr[0] = obj.ID;
                    dr[1] = obj.Name;
                    dt.Rows.Add(dr);
                }
                cboSupplier.DataSource = dt;
                cboSupplier.DisplayMember = dt.Columns["Name"].ToString();
                cboSupplier.ValueMember = dt.Columns["ID"].ToString();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void resetControl()
        {
            txtCode.Text = string.Empty;
            txtName.Text = string.Empty;
            txtUnit.Text = string.Empty;
            txtCatagory.Text = string.Empty;
            txtSpecification.Text = string.Empty;
            txtDes.Text = string.Empty;
        }
        private void butOk_Click(object sender, EventArgs e)
        {
            string _Code = txtCode.Text;
            string _Name = txtName.Text;
            string _Unit = txtUnit.Text;
            long _iDSupplier = Convert.ToInt64(cboSupplier.SelectedValue);
            string _Catagory = txtCatagory.Text;
            string _spec = txtSpecification.Text;
            string _Des = txtDes.Text;
            if (_Code.Length < 1)
            {
                new clsLibrary().runLoading("Mã vật tư không được bỏ trống.", 0);
                txtCode.Focus();
                return;
            }
            else
            {
                if (_Code.Length > 30)
                {
                    new clsLibrary().runLoading("Mã vật tư không lớn hơn 30 ký tự.", 0);
                    txtCode.Focus();
                    return;
                }
            }

            if (_Name.Length < 1)
            {
                new clsLibrary().runLoading("Tên vật tư không được trống.", 0);
                txtName.Focus();
                return;
            }
            else
            {
                if (_Name.Length > 255)
                {
                    new clsLibrary().runLoading("Tên vật tư không lớn hơn 255 ký tự.", 0);
                    txtName.Focus();
                    return;
                }
            }

            if (_Unit.Length < 1)
            {
                new clsLibrary().runLoading("Tên đơn vị không được trống.", 0);
                txtUnit.Focus();
                return;
            }
            else
            {
                if (_Unit.Length > 255)
                {
                    new clsLibrary().runLoading("Tên đơn vị không lớn hơn 255 ký tự.", 0);
                    txtUnit.Focus();
                    return;
                }
            }
            if (_spec.Length < 1)
            {
                new clsLibrary().runLoading("Đặc tả không được trống.", 0);
                txtSpecification.Focus();
                return;
            }
            else
            {
                if (_spec.Length > 255)
                {
                    new clsLibrary().runLoading("Đặc tảkhông lớn hơn 255 ký tự.", 0);
                    txtSpecification.Focus();
                    return;
                }
            }

            if (_Catagory.Length < 1)
            {
                new clsLibrary().runLoading("Tên danh mục không được trống.", 0);
                txtCatagory.Focus();
                return;
            }
            else
            {
                if (_Catagory.Length > 255)
                {
                    new clsLibrary().runLoading("Tên danh mục không lớn hơn 255 ký tự.", 0);
                    txtCatagory.Focus();
                    return;
                }
            }
            if (_Des.Length < 1)
            {
                new clsLibrary().runLoading("Ghi chú không được trống.", 0);
                txtDes.Focus();
                return;
            }
            else
            {
                if (_spec.Length > 255)
                {
                    new clsLibrary().runLoading("Ghi chú không lớn hơn 255 ký tự.", 0);
                    txtDes.Focus();
                    return;
                }
            }

            clsListMaterial obj = new clsListMaterial();
            obj.Code = _Code;
            obj.Name = _Name;
            obj.Unit = _Unit;
            obj.Specification = _spec;
            obj.Category = _Catagory;
            obj.Des = _Des;
            obj.ID = ID;
            obj.IDSupplier = _iDSupplier;


            if (ID < 1)
            {
                if (new clsDataAccessListMaterial().AddNew(obj) > 0)
                {
                    new clsLibrary().runLoading("Đã thêm mới Vật tư: " + _Name + ".", 2);
                    resetControl();
                }
                else
                    new clsLibrary().runLoading("Có lỗi xảy ra khi thêm mới.", 0);
            }
            else
            {

                if (new clsDataAccessListMaterial().Update(obj) > 0)
                {
                    new clsLibrary().runLoading("Đã sửa vật tư: '" + _Name + "'.", 2);
                    ID = 0;
                    this.Close();
                }
                else
                    new clsLibrary().runLoading("Có lỗi xảy ra khi sửa vật tư.", 0);
            }
        }

        private void butExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

    }
}
